perm filename E.TEX[TEX,DEK] blob
sn#837466 filedate 1987-03-31 generic text, type C, neo UTF8
COMMENT ā VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 % Bugs (sigh) in Computers \& Typesetting
C00005 00003 % volume B
C00027 00004 \bye
C00033 00005 Now here are some that I will make soon!
C00036 ENDMK
Cā;
% Bugs (sigh) in Computers \& Typesetting
\input manmac
\font\sltt=cmsltt10
\font\niness=cmss9
\font\ninessi=cmssi9
\proofmodefalse
\raggedbottom
\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
\def\cutpar{{\parfillskip=0pt\par}}
\def\rhead{Bugs in {\tensl \TeX: The Program}}
\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
\hrule width\hsize
\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
\nobreak\medskip}
\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
\hrule width\hsize
\line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
\nobreak\medskip}
\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
\newcount\nn
\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
% volume B
\hsize=34pc
\noindent This is a list of all corrections made so far to {\sl Computers \&
Typesetting}, Volume~B\null.
\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\to{\mathrel{.\,.}} % double dot, used only in math mode
\buginvol B, in general (7/28/86)
\tenpoint\noindent
[A number of entries were mistakenly omitted from the mini-indexes
on the right-hand pages. Here is a combined list of all the missing
items; you can mount it inside the back cover, say, as a secondary mini-index
when the first one fails\dots\ ]
\nobreak\medskip
\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
\rightskip=0pt plus 100pt minus 10pt
\pretolerance 10000
\hyphenpenalty 10000 \exhyphenpenalty 10000
\noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
\def\{\hbox{\bf#1\/}} % boldface type for reserved words
\obeylines
\def\makeref #1 #2 #3#4
{\nn=#2 \hangindent=1em \noindent\\{#1}%
\if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
\makeref active_base 222 =$1$
\makeref aux 213 =macro
\makeref begin_name 515 :\&{procedure}
\makeref big_switch 1030 =$60$
\makeref choice_node 689 =$15$
\makeref cur_boundary 271 :$0\to \\{save\_size}$
\makeref cur_c 724 :\\{quarterword}
\makeref cur_group 271 :\\{group\_code}
\makeref cur_i 724 :\\{four\_quarters}
\makeref cur_level 271 :\\{quarterword}
\makeref do_extension 1348 :\&{procedure}
\makeref dvi_buf 595 :\&{array}
\makeref dvi_gone 595 :\\{integer}
\makeref dvi_limit 595 :\\{dvi\_index}
\makeref dvi_offset 595 :\\{integer}
\makeref dvi_ptr 595 :\\{dvi\_index}
\makeref end_graf 1096 :\&{procedure}
\makeref error 82 :\&{procedure}
\makeref error_stop_mode 73 =$3$
\makeref font_base 12 =$0$
\makeref font_info 549 :\&{array}
\makeref get_token 365 :\&{procedure}
\makeref glue_base 222 =$2626$
\makeref half_buf 595 :\\{dvi\_index}
\makeref handle_right_brace 1068 :\&{procedure}
\makeref hash_base 222 =$258$
\makeref head 213 =macro
\makeref hyf_distance 921 :\&{array}
\makeref hyf_next 921 :\&{array}
\makeref hyf_num 921 :\&{array}
\makeref index 302 =macro
\makeref inf 448 :\\{boolean}
\makeref init_col 788 :\&{procedure}
\makeref init_span 787 :\&{procedure}
\makeref input_ln 31 :\&{function}
\makeref interaction 73 :$0\to 3$
\makeref limit 302 =macro
\makeref line_width 830 :\\{scaled}
\makeref macro_call 389 :\&{procedure}
\makeref main_control 1030 :\&{procedure}
\makeref mem 116 :\&{array}
\makeref mem_bot 12 =$0$
\makeref mem_end 118 :\\{pointer}
\makeref mem_top 12 =macro
\makeref mlist_to_hlist 726 :\&{procedure}
\makeref mode 213 =macro
\makeref mode_line 213 =macro
\makeref more_name 516 :\&{function}
\makeref mu 448 :\\{boolean}
\makeref name 302 =macro
\makeref nest 213 :\&{array}
\makeref off_save 1064 :\&{procedure}
\makeref open_log_file 534 :\&{procedure}
\makeref output_active 989 :\\{boolean}
\makeref p 498 :\\{pointer}
\makeref param_stack 308 :\&{array}
\makeref pool_file 50 :\\{alpha\_file}
\makeref pool_ptr 39 :\\{pool\_pointer}
\makeref prefixed_command 1211 :\&{procedure}
\makeref prev_depth 213 =macro
\makeref prev_graf 213 =macro
\makeref prev_prev_r 830 :\\{pointer}
\makeref print_err 73 =macro
\makeref r 960 :\\{trie\_pointer}
\makeref reconstitute 906 :\&{function}
\makeref resume_after_display 1200 :\&{procedure}
\makeref save_ptr 271 :$0\to \\{save\_size}$
\makeref save_stack 271 :\&{array}
\makeref scan_dimen 448 :\&{procedure}
\makeref scan_math 1151 :\&{procedure}
\makeref short_display 174 :\&{procedure}
\makeref show_node_list 182 :\&{procedure}
\makeref start 302 =macro
\makeref state 302 =macro
\makeref str_pool 39 :\&{packed}\ \&{array}
\makeref str_ptr 39 :\\{str\_number}
\makeref str_start 39 :\&{array}
\makeref tail 213 =macro
\makeref trap_zero_glue 1229 :\&{procedure}
\makeref trie 921 :\&{array}
\makeref trie_char 921 =macro
\makeref trie_link 921 =macro
\makeref trie_op 921 =macro
\makeref vlist_out 629 :\&{procedure}
\makeref write_loc 1345 :\\{pointer}
}
\hbox{\nsize=\ht0 \advance\nsize-\topskip
\divide\nsize by 3 \divide\nsize by\ninept
\multiply\nsize by\ninept \advance\nsize\topskip
\vsplit0 to\nsize \kern1pc
\msize=\ht0 \advance\msize-\topskip
\divide\msize by 2 \divide\msize by\ninept
\multiply\msize by\ninept \advance\msize\topskip
\vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
\vbox to\nsize{\box0\vss}}
\vfill\eject
\bugonpage Bvi, bottom line, and top line of next page (10/12/86)
{\hsize=29pc
\tenpoint\noindent
puter Science Report 1097 (Stanford, California, April 1986), 146~pp.
\ {\it The {\sltt WEB} programs for four utility programs that are
often used with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
{\sltt PLtoTF}, and {\sltt DVItype}.}
\par}
\bugonpage B2, line 32 (1/28/87)
\ninepoint\noindent\hskip10pt
{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
{\tt This\]is\]TeX,\]Version\]2.1\char'23}\quad
$\{\,$printed when \TeX\ starts$\,\}$
\bugonpage B7, new line after line 25 (1/28/87)
\ninepoint\noindent\hskip10pt
{\bf if} $\\{max\_in\_open}\ge128$ {\bf then} $\\{bad}\gets6$;
\bugonpage B18, line 30 (5/22/86)
\ninepoint\noindent
\\{str\_ptr}: \\{str\_number};\quad
$\{\,$number of the current string being created$\,\}$
\bugonpage B58, second line of section 136 (7/23/86)
\tenpoint\noindent
the values corresponding to `|\hbox{}|'. The \\{subtype} field is set to
\\{min\_quarterword}, since that's\cutpar
\bugonpage B84, line 12 (2/15/87)
\ninepoint\noindent\hskip10pt
{\bf define} $\\{relax}=0$\quad$\{\,$do nothing ( {\tt\char`\\relax} )$\,\}$
\bugonpage B86, third line of section 210 (8/23/86)
\tenpoint\noindent
that their special nature is easily discernible.
The ``expandable'' commands come first.
\bugonpage B88, line 23 (5/22/86)
\ninepoint\noindent
{\bf procedure\/}\ $\\{print\_mode}(m:\\{integer})$;\quad
$\{\,$prints the mode represented by $m\,\}$
\bugonpage B93, lines 3--4 (8/17/86)
{\tenpoint\parindent=1em
In the first region we have 128 equivalents for ``active characters'' that
act as control sequences, followed by 128 equivalents for single-character
control sequences.
\par}
\bugonpage B160, lines 17--20 (7/28/86)
\tenpoint\noindent
{\bf 389.\quad}%
After parameter scanning is complete, the parameters are moved to the
\\{param\_stack}. Then the macro body is fed to the scanner; in other words,
\\{macro\_call} places the defined text of the control sequence at the
top of\/ \TeX's input stack, so that \\{get\_next} will proceed to read it
next.
\bugonpage B224, lines 4--7 of section 560 (10/22/86)
\tenpoint\noindent
name and area strings \\{nom} and \\{aire}, and the
``at'' size~$s$. If $s$~is negative, it's the negative of a scale factor
to be applied to the design size; $s=-1000$ is the normal case.
Otherwise $s$ will be substituted for the design size; in this
case, $s$ must be positive and less than $2048\rm\,pt$
(i.e., it must be less than $2ā{27}$ when considered as an integer).
\bugonpage B271, line 10 (8/23/86)
\tenpoint\noindent
which will be ignored in the calculations
because it is a highly negative number.
\bugonpage B350, lines 36 and 37 (1/28/87)
\ninepoint\noindent
$v$: \\{pointer};\quad
$\{\,$points to a glue specification or a node ahead of \\{cur\_p}$\,\}$
\par\noindent
$t$: \\{integer};\quad
$\{\,$node count, if \\{cur\_p} is a discretionary node$\,\}$
\bugonpage B353, lines 8--22 (1/28/87)
\ninepoint
\noindent\hskip10pt$s\gets\\{cur\_p}$;\par
\noindent\hskip10pt{\bf if} $\\{break\_type}>\\{unhyphenated}$ {\bf then}
{\bf if} $\\{cur\_p}\ne\\{null}$ {\bf then}\par
\noindent\hskip30pt$\langle\,$Compute the discretionary
\\{break\_width} values{\sevenrm\kern.5em840}$\,\rangle$;\par
\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
\noindent\hskip30pt\vdots\hskip30pt [as before, but indented one less notch]\par
\noindent\hskip10pt{\bf end};
\bugonpage B354, line 6 (1/28/87)
\tenpoint\noindent
will be the background plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p}
should be $\gamma+l_0+l_1-l$,
minus the length of nodes that will be discarded after the discretionary break.
\bugonpage B354, lines 12--18 (1/28/87)
\ninepoint
\noindent\hskip10pt{\bf begin} $t\gets\\{replace\_count}(\\{cur\_p})$;\kern5pt
$v\gets\\{cur\_p}$;\kern5pt $s\gets\\{post\_break}(\\{cur\_p})$;\par
\noindent\hskip10pt{\bf while} $t>0$ {\bf do}\par
\noindent\hskip20pt{\bf begin} $\\{decr}(t)$;\kern5pt
$v\gets\\{link}(v)$;\kern5pt
$\langle\,$Subtract the width of node $v$ from \\{break\_width}%
{\sevenrm\kern.5em841}$\,\rangle$;\par
\noindent\hskip20pt{\bf end};\par
\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
\noindent\hskip20pt{\bf begin} $\langle\,$Add the width of
node $s$ to \\{break\_width} and increase $t$, unless it's
discardable{\sevenrm\kern.5em842}$\,\rangle$;\par
\bugonpage B354, new line after line 21 (1/28/87)
\ninepoint\noindent\hskip10pt
{\bf if} $t=0$ {\bf then} $s\gets\\{link}(v)$;\quad
$\{\,$more nodes may also be discardable after the break$\,\}$
\bugonpage B354, lines 26--34 (1/28/87)
\ninepoint\noindent
[Change `$s$' to `$v$' throughout this section (8 times).]
\bugonpage B354, line 9 from the bottom (1/28/87)
\tenpoint\noindent{\bf 842.\quad}%
\ninepoint$\langle\,$Add the width of
node $s$ to \\{break\_width} and increase $t$, unless it's
discardable{\sevenrm\kern.5em842}$\,\rangle\equiv$
\bugonpage B355, lines 1--3 (1/28/87)
\ninepoint
\noindent\hskip20pt$\\{hlist\_node},\\{vlist\_node},\\{rule\_node}$:
$\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
\noindent\hskip20pt\\{kern\_node}: {\bf if} $(t=0)\land
(\\{subtype}(s)\ne\\{acc\_kern})$ {\bf then}
$t\gets-1$\quad$\{\,$discardable$\,\}$\par
\noindent\hskip30pt{\bf else} $\\{break\_width}[1]\gets
\\{break\_width}[1]+\\{width}(s)$;\par
\noindent\hskip20pt{\bf othercases}
\\{confusion}({\tt\char'42 disc2\char'42})\par
\noindent\hskip20pt{\bf endcases};\par
\noindent\hskip10pt$\\{incr}(t)$
\bugonpage B355, patches to mini-index at bottom (1/28/87)
\eightpoint
$\\{acc\_kern}=2$, \S155.\par
$\\{incr}=\rm macro$, \S16.\par
$t$: \\{integer}, \S830.\par
$v$: \\{pointer}, \S830.
\bugonpage B372, lines 12--14 (1/28/87)
\ninepoint
\noindent\hskip40pt$\langle\,$Change discretionary to compulsory
and set $\\{disc\_break}\gets\\{true}${\sevenrm\kern.5em882}$\,\rangle$\par
\noindent\hskip30pt{\bf else if\/} $(\\{type}(q)=\\{math\_node})\lor
(\\{type}(q)=\\{kern\_node})$ {\bf then} $\\{width}(q)\gets0$;
\bugonpage B422, line 24 (8/23/86)
\ninepoint\noindent
\hskip20pt\\{prev\_p}: \\{pointer};\quad
$\{\,$predecessor of $p\,\}$
\bugonpage B435, line 16 (10/12/86)
\ninepoint\noindent
\hskip20pt$\\{width}(p)\gets\\{font\_info}[k].\\{sc}$;\quad
$\{\,$that's \\{space}$(f)\,\}$\par\noindent
\hskip20pt$\\{stretch}(p)\gets\\{font\_info}[k+1].\\{sc}$;\quad
$\{\,$and \\{space\_stretch}$(f)\,\}$\par\noindent
\hskip20pt$\\{shrink}(p)\gets\\{font\_info}[k+2].\\{sc}$;\quad
$\{\,$and \\{space\_shrink}$(f)\,\}$\par
\smallskip\eightpoint\noindent
[And the mini-index gets three new entries:
$\\{space}=macro$, \S558.
$\\{space\_shrink}=macro$, \S558.
$\\{space\_stretch}=macro$, \S558.]
\bugonpage B495, lines 18 and 19 (2/15/87)
\ninepoint\noindent
[delete these lines, since the cases cannot occur]
\bugonpage B510, line 8 (12/15/86)
\ninepoint\noindent\hskip30pt
({\tt"Pretend\]that\]you're\]Hercule\]Poirot:\]Examine\]all\]clues,"})
\bugonpage B527, new line to follow line 13 (6/17/86)
{\tenpoint\parindent=1em
This program doesn't bother to close the input files that may still be open.
\par}
\bugonpage B544, left column (1/28/87)
\eightpoint
\leftline{\\{acc\_kern}:\quad$\underline{155}$, 191, 837, 842, 879, 1125.}
\bugonpage B555, right column, new entry (10/25/86)
\eightpoint
\leftline{{\tt Huge page...},\quad 641.}
\bugonpage B556, entry for \\{incr} (1/28/87)
\eightpoint\noindent[Add a reference to section 842.]
\bugonpage B557, entry for \\{is\_char\_node} (1/28/87)
\eightpoint\noindent[Delete the reference to section 881.]
\bugonpage B560, right column (1/28/87)
\eightpoint
\leftline{\\{max\_in\_open}:\quad$\underline{11}$, 14, 304, 328.}
\bugonpage B569, right column, in appropriate places (10/12/86)
\eightpoint
\leftline{\\{space}:\quad 547, $\underline{558}$, 752, 755, 1042.}
\leftline{\\{space\_shrink}:\quad 547, $\underline{558}$, 1042.}
\leftline{\\{space\_stretch}:\quad 547, $\underline{558}$, 1042.}
\bugonpage B570, third-last line (1/28/87)
\eightpoint\noindent\qquad
786, 795, 809, 819--820, 822, 837, 842--844, 866,
\bugonpage B571, right column (10/25/86)
\eightpoint
\leftline{{\tt The following...deleted},\quad 641, 992, 1121.}
\bugonpage B576, line 2 (1/28/87)
\ninepoint\noindent
$\langle\,$Add the width of
node $s$ to \\{break\_width} and increase $t$, unless it's
discardable{\sevenrm\kern.5em842}$\,\rangle$\par
\noindent\qquad {\eightpoint Used in section 840.}
\bugonpage B591, line 6 from the bottom (1/28/87)
\ninepoint\noindent
$\langle\,$Subtract the width of node $v$ from \\{break\_width}%
{\sevenrm\kern.5em841}$\,\rangle$\quad
{\eightpoint Used in section 840.}
\bye
Now here are some that I will make soon!